// 测试函数返回值

// 若函数中未用return语句显式返回则默认返回undefined
function welcome(name) {
    console.log(`欢迎${name}`);
}

let res = null;
console.log( res ); // null
res = welcome('阿芳');
console.log( res ); // undefined

console.log( '- '.repeat(10) );

function add(a, b) {
    if( typeof a === 'number' && typeof b === 'number' ) {
        console.log(`求 ${a} 加 ${b} 之和`);
        // 返回 a 加 b 之和
        return a + b;
    }
    // 若未显式用return返回则默认返回undefined
}

res = add(1, 2);
console.log( res ); // 3

res = add('1', '2');
console.log( res ); // undefined

console.log( '- '.repeat(10) );

// 求 n 的阶乘
function factorial(n){
    if( n < 0 ) {
        throw new Error('负数没有阶乘');
    }

    if( n == 0 || n == 1 ) {
        return 1;
    }

    return n * factorial( n - 1 );
}

res = factorial(10);
console.log( res );

// 参考文档:
// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions
